package com.swlz.service;

import java.util.List;

import com.swlz.config.AlipayConfig;
import com.swlz.config.GoFastDfsConfig;
import com.swlz.config.SystemConfig;
import com.swlz.entity.Config;
import com.swlz.exception.CodeException;
import com.swlz.vo.PageVO;

/**
 * <pre>
 * 业务逻辑接口
 * 系统配置
 * ClassName : com.swlz.service.ConfigService
 * Author : swlz
 * E-Mail : 2233875735@qq.com
 * Date : 2020-06-15 04:40:15
 * Version : 1.0
 * Copyright 2020 swlz.top Inc. All rights reserved. 
 * Warning: this content is only for internal circulation of the company. It is forbidden to divulge it or use it for other commercial purposes
 * </pre>
 **/
public interface ConfigService {


	/**
	 * 添加一个新的系统配置
	 * @param config
	 * @return
	 * @throws CodeException 500:添加系统配置错误
	 */
	int add(Config config)throws CodeException;
	
	/**
	 * 根据配置关键字修改系统配置
	 * @param config
	 * @return
	 * @throws CodeException 501:修改系统配置错误
	 */
	int update(Config config)throws CodeException;
	
	
	/**
	 * 根据配置关键字删除系统配置
	 * @param configKey - 配置关键字
	 * @return
	 * @throws CodeException 502:删除系统配置错误
	 */
	int delete(String configKey)throws CodeException;
	
	/**
	 * 根据配置关键字获取系统配置对象
	 * @param configKey - 配置关键字
	 * @return
	 * @throws CodeException 503:获取系统配置失败
	 */
	Config get(String configKey)throws CodeException;
	
	/**
	 * 根据模型查找匹配的数据，并进行分页
	 * @param config - 匹配数据模型
	 * @param current - 当前页面
	 * @param rowMax - 每页最大值
	 * @return - 分页结果
	 * @throws CodeException 504:获取系统配置分页数据失败
	 */
	PageVO<Config> page(Config config,Integer current,Integer rowMax)throws CodeException;

 
	/**
	 * 根据模型查找匹配的数据
	 * @param config - 匹配数据模型
	 * @param len
	 * @return
	 * @throws CodeException 505:获取系统配置列表数据失败
	 */
	List<Config> list(Config config,int len);
	
	/**
	 * 保存一个配置bean
	 * @param config Object
	 * @throws CodeException 506:保存配置信息失败
	 */
	void save(Object config) throws CodeException;
	
	/**
	 * 获取一个配置bean
	 * @param cls 配置bean的class
	 * @return
	 * @throws CodeException 507:获取配置信息成功
	 */
	<T> T get(Class<T> cls) throws CodeException;
	
	AlipayConfig getAlipayConfig();
	
	GoFastDfsConfig getGoFastDfsConfig();
	
	SystemConfig getSystemConfig();
	
	void saveCount(int count);
	
	int getCount();
}
